/**
 * 
 */
package com.yidu.drug.action;

import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.fasterxml.jackson.databind.util.BeanUtil;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.yidu.drug.action.vo.FdPoBreakdownModelVo;
import com.yidu.drug.common.Message;
import com.yidu.drug.common.Page;
import com.yidu.drug.common.Tools;
import com.yidu.drug.model.AuditModel;
import com.yidu.drug.model.DrugManagerModel;
import com.yidu.drug.model.DrugModel;
import com.yidu.drug.model.FdPoBreakdownModel;
import com.yidu.drug.model.FdPurchaseModel;
import com.yidu.drug.model.WholesaleDetailModel;
import com.yidu.drug.model.WholesaleModel;
import com.yidu.drug.model.ZgsSellDetailModel;
import com.yidu.drug.model.ZgsSellOrderModel;
import com.yidu.drug.service.AuditService;
import com.yidu.drug.service.FdPoBreakdownModelService;
import com.yidu.drug.service.FdPurchaseService;
import com.yidu.drug.service.FinancialSheetsService;
import com.yidu.drug.service.ZgsSellDetailService;
import com.yidu.drug.service.ZgsSellOrderService;

/**
 * 
 * 类的描述	分店采购模块
 * @author xiaodozi
 * @date 2018年10月9日 下午8:36:40 
 * @version 1.0
 */
@Controller
@RequestMapping("/FdPurchase")
public class FdPurchaseAction {
	//分店采购service
	@Resource
	private FdPurchaseService fdPurchaseService;
	
	//审核记录service
	@Resource
	AuditService auditService;
	
	//分店采购详情Service
	@Resource
	private FdPoBreakdownModelService fdPoBreakdownModelService;
	
	//总店销售service
	@Resource
	private ZgsSellOrderService zgsSellOrderService;
	
	
	//总店销售详情表
	@Resource
	private ZgsSellDetailService zgsSellDetailService;
	
	//财务表service
	@Resource
	private FinancialSheetsService financialSheetsService;
	
	/**
	 * 
	 * @param session 	session对象
	 * @param fdPurchaseModel	采购订单模型
	 * @return	返回行数
	 */
	@RequestMapping("/findRow")
	@ResponseBody
	public Page findRow(HttpSession session,FdPurchaseModel fdPurchaseModel){
		//根据采购订单集合查询行数
		int total=fdPurchaseService.findRows(fdPurchaseModel);
		//new 一个page
		Page page = new Page();
		//设置一个变量为0
		int pages = 0;
		//判断查询出来的行数磨10等于0时
		if(total % 10 == 0){
			//变量等于查询出来的行数磨10
			pages = total / 10;
		}else {
			//否则变量等于查询出来的行数磨10加1
			pages = total / 10 + 1;
		}
		//加入到page
		page.setPage(pages);
		//查询出来的行数
		page.setTotalRows(total);
		//在页面上显示出来的行数
		page.setRows(10);
		//返回page
		return page;
		
	}
	
	/**
	 * 查询订单表中的所有数据
	 * @return	返回一个map集合
	 */
	@RequestMapping("/findAll")
	@ResponseBody
	public Map<String, Object> findAll(String fdPoPerson,int page,int limit){
		//new 一个采购订单表
		FdPurchaseModel fdPurchaseModel=new FdPurchaseModel();
		//加入采购人员
		fdPurchaseModel.setFdPoPerson(fdPoPerson);
		//page等于page减1乘limit
		page=(page-1)*limit;
		//new 一个page
		Page pages = new Page();
		//加入显示的数据
		pages.setPage(page);
		//加入显示的行数
		pages.setRows(limit);
		//根据fdPurchaseModel查询行数
		List<FdPurchaseModel> list=fdPurchaseService.findAll(fdPurchaseModel,page,limit);
		//new 一个map
		Map<String, Object> map=new HashMap<String , Object>();
		//code为0
		map.put("code",0);
		//加入要显示的行数
		map.put("msg","");
		//加入行数
		map.put("count",fdPurchaseService.findRows(fdPurchaseModel));
		//放入集合
		map.put("data", list);
		//返回map
		return map;
	}
	/**
	 * 
	 * @param session	session对象
	 * @param response	response请求
	 * @param wl		销售批发表
	 * @param page		分页
	 * @param limit		行数 
	 * @param dateOne	传入的日期
	 * @param dateTwo	传入的日期
	 * @return
	 */
	@RequestMapping("findAlls")
	@ResponseBody
	public Map<String, Object> findAlls(HttpSession session,HttpServletResponse response,WholesaleModel wl,int page,int limit,String dateOne,String dateTwo) {
		//获取session对象
		DrugManagerModel manager = (DrugManagerModel) session.getAttribute("manager");
		//进行编码
		response.setCharacterEncoding("UTF-8");
		//new page
		Page pages = new Page();
		//加入分页
		pages.setPage(page);
		//加入行数
		pages.setRows(limit);
		//new map集合
		Map<String,String> map=new HashMap<>();
		//加入批发人
		map.put("pfPerson", wl.getPfPerson());
		//map.put("filId", manager.getFilId());
		//加入公司id
		map.put("filId","1");
		//加入是否有效
		map.put("isva", wl.getIsva());
		//加入页
		map.put("start", String.valueOf(pages.getStart()));
		//加入行数
		map.put("rows", String.valueOf(pages.getRows()));
		//当不等于dateOne 并且不等于dateTwo
		if(!Tools.isEmpty(dateOne)&&!Tools.isEmpty(dateTwo)){
			//对比时间大于0
			if(dateOne.compareTo(dateTwo)>0){
				//加入map集合
				map.put("dateOne", dateTwo);
				//加入map集合
				map.put("dateTwo", dateOne);
				//否则
			}else{
				//加入map集合
				map.put("dateOne", dateOne);
				//加入map集合
				map.put("dateTwo", dateTwo);
			}
			//否则不等于dateOne并且dateTwo不等于
		}else if(!Tools.isEmpty(dateOne)&&Tools.isEmpty(dateTwo)){
			//加入map集合
			map.put("dateOne", dateOne);
			//否则不等于dateTwo并且dateOne不等于
		}else if(!Tools.isEmpty(dateTwo)&&Tools.isEmpty(dateOne)){
			//加入map
			map.put("dateTwo", dateTwo);
		}
		//使用map集合查询数据
		List<FdPurchaseModel> list = fdPurchaseService.findAlls(map);
		//for循环
		for (int i = 0; i < list.size(); i++) {
			//fdPoList集合根据采购订单id查询
			List<FdPoBreakdownModel> fdPoList = fdPoBreakdownModelService.findByCgId(list.get(i).getFdPoId());
			//判断如果不等于fdpoList
			if(!Tools.isEmpty(fdPoList)){
				//for循环
				for(int j = 0;j<fdPoList.size();j++){
					//判断fdPoList等于1
					if(fdPoList.size()==1){
						//判断YthNumber不等于null
						if(fdPoList.get(j).getYthNumber()!=null){
							//加入状态
							list.get(i).setTuihuo("0");
						//否则
						}else{
							//加入状态
							list.get(i).setTuihuo("1");
						}
					//否则
					}else{
						//判断YthNumber不等于null
						if(fdPoList.get(j).getYthNumber()!=null){
							//加入状态
							list.get(i).setTuihuo("0");
							//跳出循环
							break;
						//否则
						}else{
							//加入状态
							list.get(i).setTuihuo("1");
						}
					}
				}
			}
		}
		//new 一个maps集合
		Map<String, Object> maps = new HashMap<>();
		//需要符合layUI格式，code msg count data
		maps.put("code", 0);
		//加入页
		maps.put("msg", "1");
		//加入查询出来行数
		maps.put("count", fdPurchaseService.findRows(map));
		//加入数据
		maps.put("data", list);
		//new 一个WholesaleModel
		wl=new WholesaleModel();
		//返回maps集合
		return maps;
	}
	
	/**
	 * 删除
	 * @param merchantType 传入一个商家类型对象
	 * @return 返回一个字符串
	 */
	@RequestMapping("/deletes")
	@ResponseBody
	public String delete(String fdPoId){
		//根据采购订单id删除采购订单的数据
		int rows =fdPurchaseService.delete(fdPoId);
		//根据采购订单id删除采购订单详情表的数据
		fdPoBreakdownModelService.deletes(fdPoId);
		//判断如果rows大于0
		if(rows > 0) {
			//返回ok
			return "ok";
		}else {
			//否则返回no
			return "no";
		}
	}
	/**
	 * 根据订单id查询数据
	 * @param fdPoId	采购订单id
	 * @return	返回一个集合
	 */
	@RequestMapping("/findById")
	@ResponseBody
	public FdPurchaseModel findById(String fdPoId) {
		//根据采购订单id查询采购订单表中的数据
		return fdPurchaseService.findById(fdPoId);
		
	}
	
	/**
	 * 根据订单id修改数据
	 * @param fdPurchaseModel
	 * @return
	 */
	@RequestMapping("/update")
	@ResponseBody
	public String update(FdPurchaseModel fdPurchaseModel) {
		//new一个采购订单表
		FdPurchaseModel fdPurchase=new FdPurchaseModel();
		//分店采购表id
		fdPurchase.setFdPoId(fdPurchaseModel.getFdPoId());
		//分店采购表状态
		fdPurchase.setFdPoState("1");
		//分店采购表根据id修改状态
		fdPurchaseService.updateByPrimaryKeySelective(fdPurchase);
		//根据分店采购id修改数据
		int rows =fdPurchaseService.update(fdPurchaseModel);
		//根据分店采购id查询采购详情表的数量
		Integer sl=fdPoBreakdownModelService.findAllsl(fdPurchaseModel.getFdPoId());
		//根据分店采购id查询采购详情表的价格
		Integer jg=fdPoBreakdownModelService.findAlljg(fdPurchaseModel.getFdPoId());
		//根据分店采购id修改数量和价格
		fdPurchaseService.updates(sl.longValue(), new BigDecimal(jg), fdPurchaseModel.getFdPoId());
		//判断如果rows大于0
		if(rows > 0) {
			//则返回ok
			return "ok";
		}else {
			//否则返回no
			return "no";
		}
		
	}
	/**
	 * 新增订单
	 * @param session	session对象
	 * @param fdPoRemark	价格
	 * @param fdPoBreakdownModel	new 订单详情表的类
	 * @param arr	加入的集合
	 * @return
	 */
	@RequestMapping("/save")
	@ResponseBody
	public String save(HttpSession session,String fdPoRemark,FdPoBreakdownModel fdPoBreakdownModel,String arr) {
		//取到session对象
		DrugManagerModel manager = (DrugManagerModel) session.getAttribute("manager");
		
		//new 一个对象订单表对象
		FdPurchaseModel fdPurchaseModel=new  FdPurchaseModel();
		//随机一个id
		String fdPoId="CG_"+Tools.getDateOrderNo();
		Integer sj=Tools.getRandomNumber(10000);
		//得到当前时间
		Timestamp t = new Timestamp(new Date().getTime());
		//将审核状态默认为1.等待审核
		String a="1";
		//加入id
		fdPurchaseModel.setFdPoId(fdPoId);
		//加入登陆人id
		fdPurchaseModel.setManId(manager.getManId());
		//加入登陆人名字
		fdPurchaseModel.setFdPoPerson(manager.getManUser());
		//加入生成订单的时间
		fdPurchaseModel.setFdPoTime(t);
		//加入审核状态
		fdPurchaseModel.setFdPoState(a);
		//加入订单备注
		fdPurchaseModel.setFdPoRemark(fdPoRemark);
		//得到一个批次号
		String fdNumber=Tools.getDateOrderNumber();
		//加入批次号
		fdPurchaseModel.setFdNumber(fdNumber+sj);
		//加入分公司id
		fdPurchaseModel.setFilId(manager.getFilId());
		//加入到订单表中
		fdPurchaseService.save(fdPurchaseModel);
		//增加订单详情表的数据
		Gson gosn=new Gson();
		//创建一个提示消息的对象
		Message msg = new Message();
		//使用Type类，取得相应类型对象的class属性
		java.lang.reflect.Type listType=new TypeToken<ArrayList<FdPoBreakdownModelVo>>(){}.getType();//TypeToken内的泛型就是Json数据中的类型
		//使用集合接受将json转换为java对象集合后的数据
		ArrayList<FdPoBreakdownModelVo> list = gosn.fromJson(arr, listType);
		for (int i=0;i<list.size();i++) {
			//设置一个随机id
			String fdPodId="cgxq_"+Tools.getDateOrderNo();
			//加入id
			fdPoBreakdownModel.setFdPodId(fdPodId);
			//加入订单详情表id
			fdPoBreakdownModel.setFdPoId(fdPoId);
			//加入药品表id
			fdPoBreakdownModel.setDrugId(list.get(i).getDrugId());
			//加入药品数量
			fdPoBreakdownModel.setFdItemNumber(list.get(i).getFdItemNumber().longValue());
			//根据药品数量和价格计算出该药品的总金额
			fdPoBreakdownModel.setFdSubtotal(new BigDecimal(list.get(i).getFdItemNumber()*Integer.valueOf(list.get(i).getFdPrice())));
			//加入药品备注
			fdPoBreakdownModel.setFdItemRemark(list.get(i).getFdItemRemark());
			//加入药品单位
			fdPoBreakdownModel.setFdUnit(list.get(i).getFdUnit());
			//加入进货单价
			fdPoBreakdownModel.setFdPrice(new BigDecimal(list.get(i).getFdPrice()));
			//加入到数据库
			fdPoBreakdownModelService.save(fdPoBreakdownModel);
		}
		//根据分店采购id查询采购详情表的数量
		Integer sl=fdPoBreakdownModelService.findAllsl(fdPoId);
		//根据分店采购id查询采购详情表的价格
		Integer jg=fdPoBreakdownModelService.findAlljg(fdPoId);
		//根据分店采购id修改数量和价格
		int rows=fdPurchaseService.updates(sl.longValue(), new BigDecimal(jg), fdPoId);
		//判断rows大于0时
		if(rows > 0) {
			//则返回ok
			return "ok";
		}else {
			//否则返回no
			return "no";
		}
		//redirect:/pages/yuanwei/purchase.html
	}
	/**
	 * 审核查询所有和条件查询分页  分店财务 状态为1-- meilina
	 * @param response 响应
	 * @param page 页数
	 * @param limit 行数
	 * @return 批发订单
	 */
	@RequestMapping("findAllCwsh")
	@ResponseBody
	public Map<String, Object> findAllCwsh(HttpServletResponse response,FdPurchaseModel fdPurchase,int page,int limit,String dateOne,String dateTwo) {
		//进行编码
		response.setCharacterEncoding("UTF-8");
		//new 一个page
		Page pages = new Page();
		//加入页
		pages.setPage(page);
		//加入行数
		pages.setRows(limit);
		//new 一个map集合
		Map<String,String> map=new HashMap<>();
		//加入批发人
		map.put("fdPoPerson", fdPurchase.getFdPoPerson());
		//加入页
		map.put("start", String.valueOf(pages.getStart()));
		//加入查询出来的行数
		map.put("rows", String.valueOf(pages.getRows()));
		//判断dateOne不等于的时候并且dateTwo也不等于的时候
		if(!Tools.isEmpty(dateOne)&&!Tools.isEmpty(dateTwo)){
			//判断dateOne和dateTwo的时间大于0的时候
			if(dateOne.compareTo(dateTwo)>0){
				//加入map集合
				map.put("dateOne", dateTwo);
				//加入map集合
				map.put("dateTwo", dateOne);
			//集合
			}else{
				//加入map集合
				map.put("dateOne", dateOne);
				//加入map集合
				map.put("dateTwo", dateTwo);
			}
		//判断dateOne不等于的时候并且dateTwo也不等于的时候
		}else if(!Tools.isEmpty(dateOne)&&Tools.isEmpty(dateTwo)){
			//加入map集合
			map.put("dateOne", dateOne);
			//判断dateTwo不等于的时候并且dateOne也不等于的时候
		}else if(!Tools.isEmpty(dateTwo)&&Tools.isEmpty(dateOne)){
			//加入map集合
			map.put("dateTwo", dateTwo);
		}
		//根据集合中的参数查询数据
		List<FdPurchaseModel> list = fdPurchaseService.findAllPage(map);
		//new 一个maps集合
		Map<String, Object> maps = new HashMap<>();
		//需要符合layUI格式，code msg count data
		//加入显示的页
		maps.put("code", 0);
		//加入显示的数
		maps.put("msg", "1");
		//加入查询出来的行数
		maps.put("count", fdPurchaseService.findRows(fdPurchase));
		//将查询出来的list集合的数据加入到map集合中
		maps.put("data", list);
		//new 采购订单表
		fdPurchase=new FdPurchaseModel();
		//返回maps集合
		return maps;
	}
	

	/**
	 * 审核查询所有和条件查询分页  总店财务 状态为8-- meilina
	 * @param response 响应
	 * @param page 页数
	 * @param limit 行数
	 * @return 批发订单
	 */
	@RequestMapping("findAllZdCwsh")
	@ResponseBody
	public Map<String, Object> findAllZdCwsh(HttpServletResponse response,FdPurchaseModel fdPurchase,int page,int limit,String dateOne,String dateTwo) {
		//进行编码
		response.setCharacterEncoding("UTF-8");
		//new 一个page
		Page pages = new Page();
		//加入页
		pages.setPage(page);
		//加入行数
		pages.setRows(limit);
		//new 一个map集合
		Map<String,String> map=new HashMap<>();
		//加入批发人
		map.put("fdPoPerson", fdPurchase.getFdPoPerson());
	/*	map.put("filId", "1");
		map.put("isva", "1");*/
		//加入页
		map.put("start", String.valueOf(pages.getStart()));
		//加入查询出来的行数
		map.put("rows", String.valueOf(pages.getRows()));
		//判断dateOne不等于的时候并且dateTwo也不等于的时候
		if(!Tools.isEmpty(dateOne)&&!Tools.isEmpty(dateTwo)){
			//判断dateOne和dateTwo的时间大于0的时候
			if(dateOne.compareTo(dateTwo)>0){
				//加入map集合
				map.put("dateOne", dateTwo);
				//加入map集合
				map.put("dateTwo", dateOne);
			//否则
			}else{
				//加入map集合
				map.put("dateOne", dateOne);
				//加入map集合
				map.put("dateTwo", dateTwo);
			}
		//判断dateOne不等于的时候并且dateTwo也不等于的时候
		}else if(!Tools.isEmpty(dateOne)&&Tools.isEmpty(dateTwo)){
			//加入map集合
			map.put("dateOne", dateOne);
			//判断dateTwo不等于的时候并且dateOne也不等于的时候
		}else if(!Tools.isEmpty(dateTwo)&&Tools.isEmpty(dateOne)){
			//加入map集合
			map.put("dateTwo", dateTwo);
		}
		//根据集合的参数查询数据
		List<FdPurchaseModel> list = fdPurchaseService.findZdCwAll(map);
		//new 一个maps集合
		Map<String, Object> maps = new HashMap<>();
		//需要符合layUI格式，code msg count data
		//加入显示的
		maps.put("code", 0);
		//加入要分页的
		maps.put("msg", "1");
		//加入查询出来的行数
		maps.put("count", fdPurchaseService.findZdCwRow(fdPurchase));
		//将查询出来的list集合的数据加入到map集合中
		maps.put("data", list);
		//new 一个采购订单表
		fdPurchase=new FdPurchaseModel();
		//返回maps集合
		return maps;
	}
	
	/**
	 * 审核查询所有和条件查询分页  总店总经理 状态为9-- meilina
	 * @param response 响应
	 * @param page 页数
	 * @param limit 行数
	 * @return 批发订单
	 */
	@RequestMapping("findAllCwshs")
	@ResponseBody
	public Map<String, Object> findAllCwshs(HttpServletResponse response,FdPurchaseModel fdPurchase,int page,int limit,String dateOne,String dateTwo) {
		//进行编码
		response.setCharacterEncoding("UTF-8");
		//new 一个page
		Page pages = new Page();
		//加入显示的行
		pages.setPage(page);
		//加入显示的列
		pages.setRows(limit);
		//new 一个map集合
		Map<String,String> map=new HashMap<>();
		//将批发人加入到map集合
		map.put("fdPoPerson", fdPurchase.getFdPoPerson());
		//加入显示的列
		map.put("start", String.valueOf(pages.getStart()));
		//加入显示的行
		map.put("rows", String.valueOf(pages.getRows()));
		//判断dateOne不等于的时候并且dateTwo也不等于的时候
		if(!Tools.isEmpty(dateOne)&&!Tools.isEmpty(dateTwo)){
			//判断dateOne和dateTwo的时间大于0的时候
			if(dateOne.compareTo(dateTwo)>0){
				//加入map集合
				map.put("dateOne", dateTwo);
				//加入到map集合
				map.put("dateTwo", dateOne);
			//否则
			}else{
				//加入map集合
				map.put("dateOne", dateOne);
				//加入map集合
				map.put("dateTwo", dateTwo);
			}
		//判断dateOne和dateTwo的时间大于0的时候
		}else if(!Tools.isEmpty(dateOne)&&Tools.isEmpty(dateTwo)){
			//加入map集合
			map.put("dateOne", dateOne);
		//判断dateTwo和dateOne的时间大于0的时候
		}else if(!Tools.isEmpty(dateTwo)&&Tools.isEmpty(dateOne)){
			//加入map集合
			map.put("dateTwo", dateTwo);
		}
		//根据集合中的参数查询数据
		List<FdPurchaseModel> list = fdPurchaseService.findAllPagess(map);
		//new 一个maps集合
		Map<String, Object> maps = new HashMap<>();
		//需要符合layUI格式，code msg count data
		//加入显示的列为0
		maps.put("code", 0);
		//加入显示的页为1
		maps.put("msg", "1");
		//加入查询出来的行数
		maps.put("count", fdPurchaseService.findRowss(fdPurchase));
		//将查询出来的list集合的数据加入到map集合中
		maps.put("data", list);
		//new 一个采购订单表
		fdPurchase=new FdPurchaseModel();
		//返回maps集合
		return maps;
	}
	/**
	 *	 分页查询.加条件查询
	 * @param session		session对象
	 * @param response		response请求
	 * @param fdPurchase	采购订单表
	 * @param page			page集合
	 * @param limit			行数
	 * @param dateOne		查询的日期
	 * @param dateTwo		查询的日期
	 * @return				返回的数据
	 */
	@RequestMapping("/findAllPages")
	@ResponseBody
	public Map<String, Object> findAllPages(HttpSession session,HttpServletResponse response,FdPurchaseModel fdPurchase,int page,int limit,String dateOne,String dateTwo) {
		//取到session对象
		DrugManagerModel manager = (DrugManagerModel) session.getAttribute("manager");
		//进行编码
		response.setCharacterEncoding("UTF-8");
		//new 一个pages对象
		Page pages = new Page();
		//加入显示的页
		pages.setPage(page);
		//加入显示的行数
		pages.setRows(limit);
		//new 一个map集合
		Map<String,String> map=new HashMap<>();
		//加入批发人
		map.put("fdPoPerson", fdPurchase.getFdPoPerson());
		//加入公司id
		map.put("filId", manager.getFilId());
		//加入状态
		map.put("fdPoState",fdPurchase.getFdPoState());
		//加入页
		map.put("start", String.valueOf(pages.getStart()));
		//加入查询出来的行数
		map.put("rows", String.valueOf(pages.getRows()));
		//判断dateOne不等于的时候并且dateTwo也不等于的时候
		if(!Tools.isEmpty(dateOne)&&!Tools.isEmpty(dateTwo)){
			//判断dateOne和dateTwo的时间大于0的时候
			if(dateOne.compareTo(dateTwo)>0){
				//加入map集合
				map.put("dateOne", dateTwo);
				//加入map集合
				map.put("dateTwo", dateOne);
			//否则
			}else{
				//加入map集合
				map.put("dateOne", dateOne);
				//加入map集合
				map.put("dateTwo", dateTwo);
			}
		//判断dateOne不等于的时候并且dateTwo也不等于的时候
		}else if(!Tools.isEmpty(dateOne)&&Tools.isEmpty(dateTwo)){
			//加入map集合
			map.put("dateOne", dateOne);
		//判断dateTwo不等于的时候并且dateOne也不等于的时候
		}else if(!Tools.isEmpty(dateTwo)&&Tools.isEmpty(dateOne)){
			//加入map集合
			map.put("dateTwo", dateTwo);
		}
		//根据集合中的参数查询数据
		List<FdPurchaseModel> list = fdPurchaseService.findAllPages(map);
		//new 一个maps集合
		Map<String, Object> maps = new HashMap<>();
		//需要符合layUI格式，code msg count data
		maps.put("code", 0);
		//显示的页
		maps.put("msg", "1");
		//加入查询出来的行数
		maps.put("count", fdPurchaseService.findTotalRows(map));
		//将查询出来的list集合的数据加入到map集合中
		maps.put("data", list);
		//new 一个采购订单表
		fdPurchase=new FdPurchaseModel();
		//返回一个maps集合
		return maps;
	}
	
	/**
	 * 财务分页查询.加条件查询
	 * @param session		session对象
	 * @param response		response请求
	 * @param fdPurchase	采购订单表
	 * @param page			page集合
	 * @param limit			行数
	 * @param dateOne		查询的日期
	 * @param dateTwo		查询的日期
	 * @return	返回财务查询出来的数据
	 */
	@RequestMapping("/findAllcwshenhe")
	@ResponseBody
	public Map<String, Object> findAllcwshenhe(HttpSession session,HttpServletResponse response,FdPurchaseModel fdPurchase,int page,int limit,String dateOne,String dateTwo) {
		//取到session对象
		DrugManagerModel manager = (DrugManagerModel) session.getAttribute("manager");
		//进行编码
		response.setCharacterEncoding("UTF-8");
		//new 一个page
		Page pages = new Page();
		//加入页
		pages.setPage(page);
		//加入行
		pages.setRows(limit);
		//new 一个map集合
		Map<String,String> map=new HashMap<>();
		//加入批发人
		map.put("fdPoPerson", fdPurchase.getFdPoPerson());
		//加入公司id
		map.put("filId", manager.getFilId());
		//加入状态
		map.put("fdPoState","1");
		//加人页
		map.put("start", String.valueOf(pages.getStart()));
		//加入行
		map.put("rows", String.valueOf(pages.getRows()));
		//判断dateOne不等于的时候并且dateTwo也不等于的时候
		if(!Tools.isEmpty(dateOne)&&!Tools.isEmpty(dateTwo)){
			//判断dateOne和dateTwo的时间大于0的时候
			if(dateOne.compareTo(dateTwo)>0){
				//加入map集合
				map.put("dateOne", dateTwo);
				//加入map集合
				map.put("dateTwo", dateOne);
			//否则
			}else{
				//加入map集合
				map.put("dateOne", dateOne);
				//加入map集合
				map.put("dateTwo", dateTwo);
			}
		//判断dateOne和dateTwo的时间大于0的时候
		}else if(!Tools.isEmpty(dateOne)&&Tools.isEmpty(dateTwo)){
			//加入map集合
			map.put("dateOne", dateOne);
		//判断dateTwo和dateOne的时间大于0的时候
		}else if(!Tools.isEmpty(dateTwo)&&Tools.isEmpty(dateOne)){
			//加入map集合
			map.put("dateTwo", dateTwo);
		}
		//根据集合中的参数查询数据
		List<FdPurchaseModel> list = fdPurchaseService.findAllshenhe(map);
		//new 一个maps集合
		Map<String, Object> maps = new HashMap<>();
		//需要符合layUI格式，code msg count data
		maps.put("code", 0);
		//显示的页
		maps.put("msg", "1");
		//加入查询出来的行
		maps.put("count", fdPurchaseService.findAllshenheRows(map));
		//将查询出来的list集合的数据加入到map集合中
		maps.put("data", list);
		//new 一个采购订单表
		fdPurchase=new FdPurchaseModel();
		//返回一个maps集合
		return maps;
	}
	
	/**
	 * 总经理分页查询.加条件查询
	 * @param session			session对象
	 * @param response			response请求
	 * @param fdPurchase		采购订单表
	 * @param page				page对象
	 * @param limit				行数
	 * @param dateOne			查询的日期
	 * @param dateTwo			查询的日期
	 * @return		返回查询出来的行数
	 */
	@RequestMapping("/findAllzjlshenhe")
	@ResponseBody
	public Map<String, Object> findAllzjlshenhe(HttpSession session,HttpServletResponse response,FdPurchaseModel fdPurchase,int page,int limit,String dateOne,String dateTwo) {
		//取到session对象
		DrugManagerModel manager = (DrugManagerModel) session.getAttribute("manager");
		//进行编码
		response.setCharacterEncoding("UTF-8");
		//new 一个pages对象
		Page pages = new Page();
		//加入页
		pages.setPage(page);
		//加入行
		pages.setRows(limit);
		//new 一个map集合
		Map<String,String> map=new HashMap<>();
		//加入批发人
		map.put("fdPoPerson", fdPurchase.getFdPoPerson());
		//加入公司id
		map.put("filId", manager.getFilId());
		//加入状态
		map.put("fdPoState","2");
		//加入状态
		map.put("Bohui","9");
		//加入页
		map.put("start", String.valueOf(pages.getStart()));
		//加入行
		map.put("rows", String.valueOf(pages.getRows()));
		//判断dateOne不等于的时候并且dateTwo也不等于的时候
		if(!Tools.isEmpty(dateOne)&&!Tools.isEmpty(dateTwo)){
			//判断dateOne和dateTwo的时间大于0的时候
			if(dateOne.compareTo(dateTwo)>0){
				//加入map集合
				map.put("dateOne", dateTwo);
				//加入map集合
				map.put("dateTwo", dateOne);
			//否则
			}else{
				//加入map集合
				map.put("dateOne", dateOne);
				//加入map集合
				map.put("dateTwo", dateTwo);
			}
		//判断dateOne和dateTwo的时间大于0的时候
		}else if(!Tools.isEmpty(dateOne)&&Tools.isEmpty(dateTwo)){
			//加入map集合
			map.put("dateOne", dateOne);
		//判断dateTwo和dateOne的时间大于0的时候
		}else if(!Tools.isEmpty(dateTwo)&&Tools.isEmpty(dateOne)){
			//加入map集合
			map.put("dateTwo", dateTwo);
		}
		//根据集合中的参数查询数据
		List<FdPurchaseModel> list = fdPurchaseService.findAllshenhe(map);
		//new 一个maps集合
		Map<String, Object> maps = new HashMap<>();
		//需要符合layUI格式，code msg count data
		maps.put("code", 0);
		//加入显示的页
		maps.put("msg", "1");
		//加入查询出来的行数
		maps.put("count", fdPurchaseService.findAllshenheRows(map));
		//将查询出来的list集合的数据加入到map集合中
		maps.put("data", list);
		//new 一个采购订单表
		fdPurchase=new FdPurchaseModel();
		//返回一个maps集合
		return maps;
	}
	/**
	 * 采购订单财务审核
	 * @param audit	audit对象
	 * @param fdPoId	采购订单id
	 * @return	返回的页面
	 */
	@RequestMapping("/cwsh")
	public String cwsh(HttpSession session,AuditModel audit,String fdPoId){
		//取到session对象
		DrugManagerModel manager = (DrugManagerModel) session.getAttribute("manager");
		//加入采购编号
		audit.setQwId(fdPoId);
		//审核记录人名字
		audit.setShperson(manager.getManUser());
		//new一个分店采购表
		FdPurchaseModel fdPurchase=new FdPurchaseModel();
		//分店采购表id
		fdPurchase.setFdPoId(fdPoId);
		if("1".equals(audit.getAuditPass())){
			//当状态为1的时候就为通过
			audit.setAuditPass("通过");
			//分店采购表状态
			fdPurchase.setFdPoState("2");
			//分店采购表根据id修改状态
			fdPurchaseService.updateByPrimaryKeySelective(fdPurchase);
		}else{
			//当状态为0的时候就为不通过
			audit.setAuditPass("不通过");
			//分店采购表状态
			fdPurchase.setFdPoState("0");
			//分店采购表根据id修改状态
			fdPurchaseService.updateByPrimaryKeySelective(fdPurchase);
		}
		//将记录加入到审核记录表中
		int row=auditService.insertSelective(audit);
		//判断row大于0
		if(row>0){
			//重定向返回采购订单财务审核
			return "redirect:../pages/yuanwei/purchasecwsh.html";
		//当等于-1的时候
		}else if(row==-1){
			//返回错误页面
			return "redirect:../pages/error.html";
		//否则
		}else{
			//返回财务订单审核
			return "redirect:../pages/yuanwei/purchasecwsh.html";
		}
	}
	/**
	 * 总经理重新提交审核
	 * @param audit		audit对象
	 * @param fdPoId	采购订单id
	 * @return	返回的页面
	 */
	@RequestMapping("/zjltjsh")
	public String zjltjsh(HttpSession session,AuditModel audit,String fdPoId){
		//取到session对象
		DrugManagerModel manager = (DrugManagerModel) session.getAttribute("manager");		
		audit.setQwId(fdPoId);
		//审核记录人名字
		audit.setShperson(manager.getManUser());
		//new一个分店采购表
		FdPurchaseModel fdPurchase=new FdPurchaseModel();
		
		//new一个总店销售表
		ZgsSellOrderModel zgsSellOrderModel=new ZgsSellOrderModel();
		
		//分店采购表id
		fdPurchase.setFdPoId(fdPoId);
		if("1".equals(audit.getAuditPass())){
			//当状态为0的时候就为通过
			audit.setAuditPass("通过");
			//分店采购表状态
			fdPurchase.setFdPoState("3");
			//分店采购表根据id修改状态
			fdPurchaseService.updateByPrimaryKeySelective(fdPurchase);
			//总店销售表id
			zgsSellOrderModel.setSoId(fdPoId);
			//总店销售状态
			zgsSellOrderModel.setIsva("2");
			zgsSellOrderService.updateByPrimaryKeySelective(zgsSellOrderModel);
		}else{
			//当状态为0的时候就为不通过
			audit.setAuditPass("不通过");
			//分店采购表状态
			fdPurchase.setFdPoState("0");
			//分店采购表根据id修改状态
			fdPurchaseService.updateByPrimaryKeySelective(fdPurchase);
		}
		//将记录加入到审核记录表中
		int row=auditService.insertSelective(audit);
		//判断row为0
		if(row>0){
			//重定向返回总经理审核
			return "redirect:../pages/yuanwei/purchasezjlsh.html";
		//当row为-1的时候
		}else if(row==-1){
			//重定向返回错误页面
			return "redirect:../pages/error.html";
		//否则
		}else{
			//重定向返回总经理审核
			return "redirect:../pages/yuanwei/purchasezjlsh.html";
		}
	}
	
	/**
	 * 采购订单总经理审核
	 * @param audit		audit对象
	 * @param fdPoId	采购订单id
	 * @return	返回的页面
	 */
	@RequestMapping("/zjlsh")
	public String zjlsh(HttpSession session,AuditModel audit,String fdPoId,String fdSumprice,String fdSunnum,String fdNumber){
		//取到session对象
		DrugManagerModel manager = (DrugManagerModel) session.getAttribute("manager");
		//获得分公司id
		String filId=manager.getFilId();
		//总店销售表
		ZgsSellOrderModel zgsSellOrderModel=new ZgsSellOrderModel();
		//总店销售id
		//String soId="zdxs_"+Tools.getDateOrderNo();
		//销售时间
		Timestamp t = new Timestamp(new Date().getTime());
		//审核记录表的分公司采购id
		audit.setQwId(fdPoId);
		//审核记录人名字
		audit.setShperson(manager.getManUser());
		//new 一个采购详情
		FdPurchaseModel fdPurchase=new FdPurchaseModel();
		//加入采购订单id
		fdPurchase.setFdPoId(fdPoId);
		int findSoId=zgsSellOrderService.findSoId(fdPoId);
		if(findSoId==1){
			//当状态为0的时候就为通过
			audit.setAuditPass("通过");
			//加入采购状态
			fdPurchase.setFdPoState("3");
			//根据采购订单id修改状态
			fdPurchaseService.updateByPrimaryKeySelective(fdPurchase);
			//总店销售表id
			zgsSellOrderModel.setSoId(fdPoId);
			//总店销售表状态
			zgsSellOrderModel.setIsva("2");
			//根据id修改状态
			zgsSellOrderService.updateByPrimaryKeySelective(zgsSellOrderModel);
		}else{
			if("1".equals(audit.getAuditPass())){
				//当状态为0的时候就为通过
				audit.setAuditPass("通过");
				//加入采购状态
				fdPurchase.setFdPoState("3");
				//根据采购订单id修改状态
				fdPurchaseService.updateByPrimaryKeySelective(fdPurchase);
				//根据分公司id查询金额
				Double jine=financialSheetsService.findSumMoney(filId);
				//根据分公司id修改金额 
				financialSheetsService.updates(new BigDecimal(jine-Double.valueOf(fdSumprice)), filId);
				//根据采购订单id查询采购订单详情表的数据
				List<FdPoBreakdownModel> list=fdPoBreakdownModelService.findAllById(fdPoId);
				for(int i=0;i<list.size();i++){
					//销售详情表id
					String sdId="zdxq_"+Tools.getDateOrderNo();
					//销售详情表
					ZgsSellDetailModel zgsSellDetailModel=new ZgsSellDetailModel();
					//销售详情表id
					zgsSellDetailModel.setSdId(sdId);
					//销售表id
					zgsSellDetailModel.setSoId(fdPoId);
					//药品名字
					zgsSellDetailModel.setSdItemName(list.get(i).getDrugName());
					//规格
					zgsSellDetailModel.setSdUnit(list.get(i).getFdUnit());
					//数量
					zgsSellDetailModel.setSdNumber(Long.valueOf(list.get(i).getFdItemNumber()));
					//单价
					zgsSellDetailModel.setSdPrice(list.get(i).getFdPrice());
					//价格
					zgsSellDetailModel.setSdSubtotal(list.get(i).getFdSubtotal());
					//销售时间
					Timestamp date = new Timestamp(new Date().getTime());
					//销售时间
					zgsSellDetailModel.setOptime(date);
					//
					zgsSellDetailModel.setIsva("有效");
					//加入总店销售详情表数据
					zgsSellDetailService.insertSelective(zgsSellDetailModel);
				}
				//总店销售表id
				zgsSellOrderModel.setSoId(fdPoId);
				//编号
				zgsSellOrderModel.setSoNum(Long.valueOf(fdNumber));
				//总店销售表人员
				zgsSellOrderModel.setSoPerson("唐磊");
				//总店销售时间
				zgsSellOrderModel.setSoDate(t);
				//总店销售价格
				zgsSellOrderModel.setSoTotalmoney(new BigDecimal(fdSumprice));
				//总店销售数量
				zgsSellOrderModel.setSoTotalnum(Long.valueOf(fdSunnum));
				//总店销售分公司id
				zgsSellOrderModel.setSoExplain(manager.getFilId());
				//总店销售审核
				zgsSellOrderModel.setIsva("2");
				//加入总店销售数据
				zgsSellOrderService.insertSelective(zgsSellOrderModel);
			}else{
				//当状态为0的时候就为不通过
				audit.setAuditPass("不通过");
				//加入采购状态
				fdPurchase.setFdPoState("0");
				//根据采购订单id修改状态
				fdPurchaseService.updateByPrimaryKeySelective(fdPurchase);
			}
		}
		
		
		//加入到审核记录表中
		int row=auditService.insertSelective(audit);
		//判断row大于0
		if(row>0){
			//重定向返回总经理审核页面
			return "redirect:../pages/yuanwei/purchasezjlsh.html";
		///判断row为-1时
		}else if(row==-1){
			//重定向返回错误页面
			return "redirect:../pages/error.html";
		//否则
		}else{
			//重定向返回总经理审核页面
			return "redirect:../pages/yuanwei/purchasezjlsh.html";
		}
	}
	
	/**
	 * 根据采购订单id查询数据
	 * @param fdPoId	采购订单id
	 * @return	返回一个map集合
	 */
	@RequestMapping("/findQwId")
	@ResponseBody
	public Map<String, Object> findQwId(String fdPoId){
		//根据采购订单id查询数据
		List<AuditModel> list=auditService.findQwId(fdPoId);
		//new 一个map集合
		Map<String, Object> map=new HashMap<String , Object>();
		//加入列
		map.put("code",0);
		//加入日志
		map.put("msg","");
		//加入显示的行
		map.put("count",10);
		//加入查询出来的数据
		map.put("data", list);
		//返回map集合
		return map;
		
	}
	/**
	 * 根据分公司id查询金额
	 * @param session	session对象
	 * @return 返回查询出来的金额
	 */
	@RequestMapping("/jiage")
	@ResponseBody
	public Double jiage(HttpSession session){
		//取到session对象
		DrugManagerModel manager = (DrugManagerModel) session.getAttribute("manager");
		//获得分公司id
		String filId=manager.getFilId();
		//根据分公司id查询金额
		Double jine=financialSheetsService.findSumMoney(filId);
		//返回查询出来的金额
		return jine;
	}
}
